Essential Scala: Six Core Principles For Learning Scala